Many networks employ network functions that are manually configured on network elements (NEs) operating in the network. Such configuration involves allocation of NE physical resources to enable the functions. The development of virtualization and constant development of new services has resulted in increasing demand on network administrators, resulting in a desire to configure and manage various services programmatically. In some cases, such some services may depend on one another. With large scale services being deployed and customized on a per customer or an as need basis, such service dependences may become quite complex. Enabling new services on an existing network is a complex task and may require a complete re-design of a network in order to create a workflow of dependent services that incorporates a new service function. Further, there is not an effective mechanism for determining whether such dependent services are operating together as intended in a new deployment beyond basic trial and error of each function.